<?php 
class Imglib_modul extends CI_Model {
    public $path;
    public $folder;
	
	
	# массив с изображениями ,массив с размероми ,путь изображения, красный RGB, зелёный RGB, синий RGB
	# images = изображение
	# $size = размер изображения(ширина, высота, папка)
	# path путь для сохранения
	# $red
	# $green
	# $blue
	# папка указываяется только общая, в которой должы быть созданы подпапки с названием ширины: если ширина 
	# изображения того которого вы хотите сделать равна 80px то подпапка должна называться /ваш путь/80/
	#
	#
	# Все изображения создаются в jpg формате 
	# Загрузка разрешена только jpg gif png
	
	public function __construct() {
		// Call the Model constructor
		parent::__construct();
  # $this ->path = '/var/www/yroom.ru/www/images/';
 
	}
  
	public 	function resize($images,$data,$path=false, $red, $green, $blue, $name_img = false){
	    
 		 $size = false;
 		# Здесь надо сделать проверку на существование пути
 		
 	 
 			$this ->path = '/var/www/yroom.ru/www/images/'.$path ;
  
		if($name_img == false)$name_img	=	time().rand(111,999);
 			 
 
		 	$old_images =  $images['tmp_name'];
			if($images['size']	!= 0){
			    
               
				$size = getimagesize($old_images);
			} 
			$size_w = $size[0];
			$size_h = $size[1];
		 	$img__type = $size[2];
			
			if($img__type == "2"	||	$img__type ==	"1" ||	$img__type ==	"3"){
				if($img__type ==	"2"){			#	JPG
					$old_images = imagecreatefromjpeg ($old_images);
				}ELSEIF($img__type ==	"1"){		# GIF
					$old_images = imagecreatefromgif ($old_images);
				}ELSEIF($img__type ==	"3"){		# png
					$old_images = imagecreatefrompng ($old_images);
				}
				
				
				 
				for($t=0; $t < count($data); $t++){

					$w = $data[$t]['0'];
					$h = $data[$t]['1'];

					// sets background
					$im = imagecreatetruecolor ( $w, $h);
					$imagecolors = imagecolorallocate ($im, $red, $green, $blue);
					imagefill($im,0,0,$imagecolors);

					# вычисляем пропорцию будущих фотографий и сходной
			 	$proportion_dst 		= round(($w/$h),2);
			 	$proportion_src 	= round(($size_w/$size_h),2);

			 	if( $proportion_src > $proportion_dst ){
						# Если ширина больше по пропорции высоты
						if($size_w > $w){
							# ширина больше ширины необходимой фотографии
							$dst_x = 0;
							$dst_w  = $w;
							$src_x = 0;
							$src_w = $size_w;
							if($size_h>$h){
								$src_h=$size_h;
								$src_y = 0;
								$dst_h  = round(($w*$size_h)/$size_w);
								$dst_y  = round(($h-$dst_h)/2);
							}else{
								$src_h=$size_h;
								$src_y = 0;
								$dst_h=($w*$size_h/$size_w);
								$dst_y=round(($h-$dst_h)/2);
							}
						}elseif($size_w < $w){
							# ширина меньше ширины необходимой фотографии
							$src_x = 0;
							$src_y = 0;
							$src_w = $size_w;
							$dst_x = round(($w-$size_w)/2);
							$dst_w  = $size_w;
							if($size_h>$h){
								# Высота фотографии больше необходимой фотографии
								$src_h=$size_h;
								$src_y = 0;
								$dst_h  = $h;
								$dst_y = 0;
							}elseif($size_h<$h){
								# Высота фотографии меньше необходимой фотографии
								$src_h=$size_h;
								$src_y = 0;
								$dst_h  = $size_h;
								$dst_y = round(($h-$size_h)/2);
							}else{
								# Высота фотографии меньше необходимой фотографии
								$src_h=$size_h;
								$src_y = 0;
								$dst_h  = $size_h;
								$dst_y = 0;
							}
						}else{
							# ширина идентичена
							$src_w = $size_w;
							$src_x = 0;
							$dst_w = $size_w;
							$dst_x  = 0;
							if($size_h>$h){
								$dst_h = $h;
								$dst_y = 0;
								$dst_h_temp = round($w*$size_h/$size_w);
								$src_y= round(($dst_h_temp-$h)/2);
								$src_h = $size_h - (2*$src_y);
							}else{
								$src_y = 0;
								$src_h = $size_h;
								$dst_y = round(($h-$size_h)/2);
								$dst_h = $size_h;
							}
						}
					}elseif( $proportion_src < $proportion_dst){
						# Если высота больше по пропорции ширины
						if($size_h>$h){
							$dst_h = $h;
							$dst_y = 0;
							$dst_h_temp = round($w*$size_h/$size_w);
							$src_y= 0;
							$src_h = $size_h;
						}else{
							$src_y = 0;
							$src_h = $size_h;
							$dst_y = round(($h-$size_h)/2);
							$dst_h = $size_h;
						}
						if($size_w>$w){
							# ширина изображения больше конечного изображения
							$src_x = 0;
							$src_w = $size_w;
							$dst_w =round(($size_w*$h)/$size_h);
							$dst_x = round(($w-$dst_w)/2);
							$src_y = 0;
							$src_h = $h;

							if($h>$size_h){

								$src_y = 0;
								$src_h = $size_h;
								$dst_w =round(($size_w*$h)/$size_h);
								$dst_x = round(($w-$dst_w)/2);

							}else{
								$src_y = 0;
								$src_h = $size_h;
							}
						}else{

							$src_w = $size_w;
							$src_x=0;

							if($h>$size_h){
								$src_h =$size_h;
								$dst_w = $size_w*$src_h/$size_h;
								$dst_x = round(($w-$size_w)/2);

							}else{
								$src_h = $h;
								$dst_w = $size_w;
								$src_y = round(($size_h-$h)/2);
								$dst_x = round(($w-$dst_w)/2);
							}

						}
					}else{
						#	фотографии Равны
						if($size_w < $w ){
							# фотография меньше но пропорциональна
							$src_x = 0;
							$src_w = $size_w;

							$dst_x = round(($w-$size_w)/2);
							$dst_w = $size_w;
							$src_y = 0;
							$src_h = $h;
							$dst_y = round(($h-$size_h)/2);;
							$dst_h = $h;
						}else{
							# фотография больше но пропорциональна
							$src_x = 0;
							$src_w = $size_w;
							$dst_x = 0;
							$dst_w = $w;
							$src_y = 0;
							$src_h = $size_h;
							$dst_y = 0;
							$dst_h = $h;
						}
					} 
                    
                 
                    
					imagecopyresampled ($im, $old_images ,  $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h);
					imageJpeg ($im , $this ->path.$w.'_'.$name_img.'.jpg');
				}
			} 
		return  $name_img;
	}
}
?>